#ifndef DEVICE_H
#define DEVICE_H

#include "Thread.h"
#include "Comunicador.h"
#include "ServerCommandInterpreter.h"
#include "ColaBloqueante.h"

class Device: public Thread{

private:
	Comunicador * comunicador;
	Comunicador * comunicadorNotif;
	ServerCommandInterpreter comandos;
	ColaBloqueante<ServerCommand*> cola;
	ColaBloqueante<std::string> colaRespuestas, colaNotificaciones;
	ColaBloqueante<Device*> &colaTareas;
	bool desconec;


public:

	Device(Comunicador * c, Comunicador * cn, ColaBloqueante<Device*> &q);
	~Device();
	virtual void run();
	virtual void stop();
	void notificar(std::string msj);
	std::string ejecutarTarea(std::string nombre);
	void desconectarDelServer();
	bool esperandoDesconexion();
	int compare(Device &device);
};

#endif
